Copyright ã1995 by NeXT Computer, Inc.  All Rights Reserved.

Sound Functions

Accessing Sound Devices and Hardware

Access sound devices

int 	SNDAcquire(int soundResource, int priority, int preempt, int timeout,  SNDNegotiationFun negFun, void *arg, port_t *devicePort, port_t *ownerPort)
int 	SNDReset(int soundResource, port_t devicePort, port_t ownerPort)
int 	SNDRelease(int soundResource, port_t *devicePort, port_t *ownerPort)

Reserve sound devices for recording or playback

int 	SNDReserve(int soundResource, int priority)
int 	SNDUnreserve(int soundResource)

Set the host computer for subsequent playback or recording

int 	SNDSetHost(char *newHostname)

Sound playback utilities

int 	SNDSetVolume(int left, int right)
int 	SNDGetVolume(int *left, int *right)
int 	SNDSetMute(int speakerOn)
int 	SNDGetMute(int *speakerOn)
int 	SNDSetFilter(int filterOn)
int 	SNDGetFilter(int *filterOn)

Recording and Playing

Play a soundfile

int SNDPlaySoundfile(char *path, int priority)

Recording and playing a sound

int	SNDStartPlaying(SNDSoundStruct *sound, int tag, int priority, int preempt, SNDNotificationFun beginFun, SNDNotificationFun endFun)
int 	SNDVerifyPlayable(SNDSoundStruct *sound)
int 	SNDStartRecording(SNDSoundStruct *sound, int tag, int priority, int preempt, SNDNotificationFun beginFun, SNDNotificationFun endFun)
int 	SNDStartRecordingFile(char *fileName, SNDSoundStruct *sound, int tag, int priority, int preempt, SNDNotificationFun beginFun, SNDNotificationFun endFun)
int 	SNDStop(int tag)
int 	SNDWait(int tag)
int 	SNDSamplesProcessed(int tag)
int 	SNDModifyPriority(int tag, int newPriority)

Reading and Writing Soundfiles

Read a sound from a file

int 	SNDReadSoundfile(char *path, SNDSoundStruct **sound)
int 	SNDRead(int fd, SNDSoundStruct **sound)
int 	SNDReadHeader(int fd, SNDSoundStruct **sound)
int 	SNDReadDSPfile(char *path, SNDSoundStruct **sound, char *info)

Write a sound to a file 

int 	SNDWriteSoundfile(char *path, SNDSoundStruct *sound)
int 	SNDWrite(int fd, SNDSoundStruct *sound)
int 	SNDWriteHeader(int fd, SNDSoundStruct *sound)

Accessing Sound Data

Create and free a sound structure 

int 	SNDAlloc(SNDSoundStruct **sound, int dataSize, int dataFormat, int samplingRate, int channelCount, int infoSize)
int 	SNDFree(SNDSoundStruct *sound)

Gain access to sampled sound data

int 	SNDGetDataPointer(SNDSoundStruct *sound, char **ptr, int *size, int *width)

Measure samples in a sound

int 	SNDSampleCount(SNDSoundStruct *sound)
int 	SNDBytesToSamples(int byteCount, int channelCount, int dataFormat)
int 	SNDSamplesToBytes(int sampleCount, int channelCount, int dataFormat)

Accessing the DSP

Boot the DSP

int 	SNDBootDSP(port_t *devicePort, port_t *ownerPort, SNDSoundStruct *dspCore)

Run the DSP

int 	SNDRunDSP(SNDSoundStruct *dspCore, char *toDSP, int toCount, int toWidth, int toBufferSize, char **fromDSP, int *fromCount, int fromWidth, int negotiationTimeout, int flushTimeout, int conversionTimeout)

Compressing Sound Data

Compress or decompress a sound

int 	SNDCompressSound(SNDSoundStruct *fromSound, SNDSoundStruct **toSound, BOOL bitFaithful, int compressionAmount)

Query for frequency bands used by Audio Transform Compression

int 	SNDGetNumberOfATCBands(int *numBands)
int 	SNDGetATCBandFrequencies(int numBands, float *centerFreqs)
int 	SNDGetATCBandwidths(int numBands, float *bandwidths)

Speed up or slow down playback of ATC sound

int 	SNDDropATCSamples(int numSamples, int bySamples)
int 	SNDInsertATCSamples(int numSamples, int bySamples)

Modify volume or equalization for ATC playback

int 	SNDSetATCGain(float level)
int 	SNDGetATCGain(float *level)
int 	SNDSetATCEqualizerGains(int numBands, float *gains)
int 	SNDGetATCEqualizerGains(int numBands, float *gains)
int 	SNDScaleATCEqualizerGains(int numBands, float *gainScalars)

Set or get ATC parameters

int 	SNDSetATCSquelchThresholds(int numBands, float *thresholds)
int 	SNDGetATCSquelchThresholds(int numBands, float *thresholds)
int 	SNDUseDefaultATCSquelchThresholds(void)

Set and get compression attributes used in recording

int 	SNDSetCompressionOptions(SNDSoundStruct *sound, int bitFaithful, int compressionAmount)
int 	SNDGetCompressionOptions(SNDSoundStruct *sound, int *bitFaithful, int *compressionAmount)

Converting Sound Data

Convert between logarithmic and linear units

float 	SNDConvertDecibelsToLinear(float dB)
float 	SNDConvertLinearToDecibels(float linear)

Convert a sound's attributes

int 	SNDConvertSound(SNDSoundStruct *fromSound, SNDSoundStruct **toSound)
unsigned char 	SNDMulaw(short linearValue)
short 	SNDiMulaw(unsigned char mulawValue)

Editing Sound Data

Copy all or part of a sound

int 	SNDCopySound(SNDSoundStruct **toSound, SNDSoundStruct *fromSound)
int 	SNDCopySamples(SNDSoundStruct **toSound, SNDSoundStruct *fromSound, int startSample, int sampleCount)

Edit a sampled sound

int 	SNDInsertSamples(SNDSoundStruct *toSound, SNDSoundStruct *fromSound, int startSample)
int 	SNDDeleteSamples(SNDSoundStruct *sound, int startSample, int sampleCount)
int 	SNDCompactSamples(SNDSoundStruct **toSound, SNDSoundStruct *fromSound)

Sound Errors

Describe a sound error

char 	*SNDSoundError(int err)